#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <queue>
#include <stack>
#include <vector>

using namespace std;

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Node {
   public:
    int val;
    Node* next;
    Node* random;

    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution {
    int getMaxHeight(TreeNode* root) {
        if (root == NULL) {
            return 0;
        }
        return max(getMaxHeight(root->left), getMaxHeight(root->right)) + 1;
    }

   public:
    bool isBalanced(TreeNode* root) {
        if (root == NULL) {
            return true;
        }
        int left_height = getMaxHeight(root->left);
        int right_height = getMaxHeight(root->right);
        if (abs(left_height - right_height) > 1) {
            return false;
        }
        return isBalanced(root->left) && isBalanced(root->right);
    }
};

int main() {
    cout << "Hello, World!";
    // Solution()
    return 0;
}
